1. Field of the Invention
The invention relates generally to data processing environments and, more particularly, to those data processing environments that process messages.
2. Description of the Background Art
Computers are very powerful tools for storing and providing access to vast amounts of information. The first personal computers were largely stand-alone units with no direct connection to other computers or computer networks. Data exchanges between computers were mainly accomplished by exchanging magnetic or optical media such as floppy disks. Over time, more and more computers were connected to each other and exchanged information using Local Area Networks (“LANs”) and/or Wide Area Networks (“WANs”). Initially, such connections were primarily amongst computers within the same organization via an internal network.
More recently, the explosive growth of the Internet has provided access to tremendous quantities of information from a wide variety of sources. The Internet comprises a vast number of computers and computer networks that are interconnected through communication links. In order to make the best use of these resources, various protocols have been developed. Health Level Seven (HL7), for example, is one of several American National Standards Institute (ANSI)—accredited Standards Developing Organizations (SDOs) operating in the healthcare arena. Health Level Seven's domain is clinical and administrative data pertinent to healthcare. “Level Seven” refers to the highest level of the International Organization for Standardization (ISO) communications model for Open Systems Interconnection (OSI)—the application level. The application level addresses definition of the data to be exchanged, the timing of the interchange, and the communication of certain errors to the application. The seventh level supports such functions as security checks, participant identification, availability checks, exchange mechanism negotiations and, most importantly, data exchange structuring. HL7 is responsible for maintaining guides for HL7 messages that can stand-alone or be embedded within ASC X12N transactions. As such, HL7 addresses the movement of messages in a healthcare environment, including the representation of the connections that exist between the information carried in the fields of HL7 messages.
HL7 is but one example of a messaging environment. Other examples include enterprise application integration (EAI), business process management, database messaging, real-time systems (e.g., satellites and monitoring devices), and wireless communication. As is the case with HL7 messages, these environments entail the movement of business application data in a given environment. This type of information typically includes a defined standard or format, and employs metadata.
Most messaging systems tend to employ generic engines that at runtime discover information about what the given message is, including using metadata at runtime in an interpreted fashion. Thereafter, individual messages may be parsed. The generic approach has a major disadvantage in that the implementation (of a generic engine) requires a relatively large amount of conditional logic (i.e., executable program logic) to handle all the various scenarios that exist. This additional conditional logic requires additional processor (CPU) and memory resources. As most of this processing turns out to not be required for the given task at hand, the generic approach ends up providing a highly inefficient solution. As a result, disadvantages encountered include the following: performance insufficient for high-volume messaging; underutilization of platform; inadequate performance; limited environments supported (e.g., implemented in non-portable programming language); and unnecessary data normalization (e.g., unnecessary code set conversion and unnecessary integer endian-format conversion).
At the same time, however, there is increasing customer demand in the EAI market place for better performance, so that businesses have quicker access to the business processes and information necessary for efficiently running one's business. Additionally, given ever-present economic constraints, business customers also demand better utilization of hardware platforms that they have already invested in (i.e., computer hardware, operating system, and application environments, such as J2EE). Presently, existing systems are widely viewed by customers as not meeting these demands.
One attempt to address the foregoing is a brute-force hardware upgrade. This includes increasing memory of the host system, increasing CPU speed of the host system, and increasing the number of CPUs on the host system. However, even with ever-increasing hardware performance available, the brute-force approach has not provided a solution that is sufficient for customers' demands. Other attempts have focused on “fine tuning” or caching schemes, including: tune supporting software (i.e., database (e.g., indexes, tuning), operating system); cache message buffer space (avoiding costly system calls to allocate memory); preload and cache message definition metadata (e.g., memory-resident metadata); and cache message definition metadata (avoid overhead); and tune host application (e.g., caching parsers). Fine tuning may include manually crafting individual components by hand (i.e., manual coding), in an effort to optimize a particular deployment's processing.
These attempts have their own problems. As these attempts do not address the underlying problem (of inefficient generic program logic), these attempts lead to inefficient utilization of the given underlying platform. The generic nature of these solutions diminishes potential performance, as the solutions do not address wasteful processing and do not take full advantage of what is known at design-time. The generic nature largely disregards real-world usage, and squanders an opportunity to leverage a given customer's knowledge of messages likely to be received for processing. Although the manual crafting of individual components may optimize a given deployment, developing components by hand is time consuming, expensive, and error-prone. As a result of these disadvantages, existing systems do not scale well. Accordingly, a better solution is sought.